package study.core.rdd.operator

import org.apache.spark.{SparkConf, SparkContext}

/**
 * 转换算子之flatMap操作
 * 将处理的数据进行扁平化后(将集合进行拆分)再进行映射处理
 *
 * @author zh
 * @date 2021/5/15 10:47
 */
object TestFlatMap {
  def main(args: Array[String]): Unit = {
    val sparkConf = new SparkConf().setMaster("local[*]").setAppName("rddMap")
    val context = new SparkContext(sparkConf)

    // 准备集合
    val list = List(List(1, 2, 3), 4, 5, List(6, 7))
    // 创建RDD
    val rdd = context.makeRDD(list)

    val result = rdd.flatMap {
      list => {
        list match {
            // 如果是list则输出list
          case list: List[_] => list
            // 如果不是list，则转换为list
          case list => List(list)
        }

      }

    }

    //1
    //2
    //3
    //4
    //5
    //6
    //7
    result.collect().foreach(println)

    context.stop()
  }

}
